<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

/**
 * Projeto Interdiciplinar
 * Gurpo 1 - Primeira turma do curso de Aux Info da Escom Brasília
 * Criado em: 18/11/2012, 23:26:37
 * Description of m_ordem
 *
 *  * @author 2 Sgt Lemoel, 
 *         3 Sgt Albuquerque,
 *         3 Sgt Azambuja,
 *         3 Fabio Moura
 * @since 11/2012
 * @version 1
 */
class M_Ordem extends CI_Model {
    
    function __construct() {
        parent::__construct();
        $this->_tabela = "ORDEM";
    }
    
    
//    /*
//     * Relação de ordens cadastrada no banco de dados
//     */
//    public function listaOrdem() {
//        
//        $hoje = date("Y/m/d");
//        
//        $sql = "SELECT  P1.`PERFIL_DESC` PERFIL_DESC_DESTINO,
//                P1.`ID` PERFIL_ID_DESTINO,
//                O.`ID` ORDEM_ID,
//                O.`DESC_ORDEM` ORDEM_DESC,
//                DATE_FORMAT(O.`DT_HORA_INICIO`, '%d/%m/%Y <br/> %H:%i:%s') DT_HORA_INICIO,
//                DATE_FORMAT(O.`DT_HORA_FIM`, '%d/%m/%Y <br/> %H:%i:%s') DT_HORA_FIM,
//                O.`USUARIO_IDT` USUARIO_IDT,
//                P.`ID` PERFIL_ID_QUEM_DEU_ORDEM,
//                P.`PERFIL_DESC` DESC_PERFIL_QUEM_DEU_ORDEM
//        FROM ORDEM O
//            INNER JOIN PERFIL P ON P.`ID` = O.`PERFIL_ID`
//            INNER JOIN PERFIL P1 ON P1.`ID` = O.`PERFIL_DESTINO_ID`
//            INNER JOIN USUARIO U ON U.IDT = O.`USUARIO_IDT`
//        WHERE (O.DT_HORA_FIM IS NULL OR O.DT_HORA_FIM  >= ?)
//        AND O.`DT_HORA_INICIO` <= ?";
//
//        return $this->db->query($sql,array($hoje,$hoje));
//    }
    
    /**
     * Retorna as ordens para um determinado perfil
     * @param int $perfil perfil do usuario que se quer dar ordens
     */
    public function getOrdens($perfil = NULL) {
        
        $hoje = date('d/m/Y');
        
        $and = (empty($perfil)) ? '' : " AND OP.`PERFIL_ID` = $perfil ";
        
        $sql = "SELECT 
                        P.`PERFIL_DESC` PERFIL_DESC_DESTINO,
                        P.`ID` PERFIL_ID_DESTINO,
                        O.`ID` ORDEM_ID,
                        O.`DESC_ORDEM` ORDEM_DESC,
                        DATE_FORMAT(O.`DT_HORA_INICIO`, '%d/%m/%Y') DT_HORA_INICIO,
                        DATE_FORMAT(O.`DT_HORA_FIM`, '%d/%m/%Y') DT_HORA_FIM,
                        O.`USUARIO_IDT` USUARIO_IDT,
                        P1.`ID` PERFIL_ID_QUEM_DEU_ORDEM,
                        P1.`PERFIL_DESC` DESC_PERFIL_QUEM_DEU_ORDEM

                 FROM ORDEM O
                    INNER JOIN ORDEM_PERFIL OP ON OP.`ORDEM_ID` = O.`ID`
                    INNER JOIN PERFIL P ON P.`ID` = OP.`PERFIL_ID`
                    INNER JOIN PERFIL P1 ON P1.`ID` = O.`PERFIL_ID`
                    INNER JOIN USUARIO U ON U.`IDT` = O.`USUARIO_IDT`
                WHERE DATE_FORMAT(O.`DT_HORA_INICIO`, '%d/%m/%Y')  <= ?                     
                    AND (DATE_FORMAT(O.`DT_HORA_FIM`,'%d/%m/%Y')  >= ? OR O.`DT_HORA_FIM` IS NULL)
                    $and
                ORDER BY ORDEM_ID DESC";
                
        return $this->db->query($sql,array($hoje,$hoje));
    }
    
    public function gravaOrdem($dados) {

        $dados['DT_HORA_INICIO'] = $this->m_tools->converteData($dados['DT_HORA_INICIO']);
        
        if(empty($dados['DT_HORA_FIM'])){
            $arrayOrdem['DT_HORA_FIM']  = NULL;
        } else {
            $arrayOrdem['DT_HORA_FIM'] = $this->m_tools->converteData($dados['DT_HORA_FIM']);
        }
        
        $arrayOrdem['PERFIL_ID'] = $this->session->userdata('perfilId'); 
        $arrayOrdem['DESC_ORDEM'] = $dados['DESC_ORDEM'];
        $arrayOrdem['DT_HORA_INICIO'] = $dados['DT_HORA_INICIO'];
        $arrayOrdem['USUARIO_IDT'] = $this->session->userdata('idt');
        
        $this->db->trans_start();
            $this->db->insert('ORDEM', $arrayOrdem);
            $idOrdem = $this->db->insert_id();
            
            foreach ($dados['arrayPerfil'] as $value) {
               $this->db->insert('ORDEM_PERFIL',array('ORDEM_ID' =>$idOrdem,'PERFIL_ID' =>$value));
            }
            /*
             * Finalizando a transacao do banco
             */
            $this->db->trans_complete();

            /*
             * Checando se a trasação foi bem realizada
             */
            if ($this->db->trans_status() === FALSE) {
                return FALSE;
            } else {
                return TRUE;
            }        
    }
}
?>